/*
 * Copyright (C) 2013 Daniel Treffenstädt <daniel@treffenstaedt.de>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301  USA
 */

#include "OSize.h"
#include "OPosition.h"


O_START_NAMESPACE

Size::Size(unsigned short w, unsigned short h)
{
	m_width		= w;
	m_height	= h;
}

Size::Size()
{
	m_width		= 0;
	m_height	= 0;
}

unsigned short Size::width()
{
	return m_width;
}

unsigned short Size::height()
{
	return m_height;
}

void Size::operator =(Size s)
{
	m_width		= s.width();
	m_height	= s.height();
}

bool Size::operator ==(Size s)
{
	return (width() == s.width() && height() == s.height());
}

bool Size::operator !=(Size s)
{
	return !((*this) == s);
}

bool Size::operator <=(Size s)
{
	return width() <= s.width() && height() <= s.height();
}

bool Size::operator >=(Size s)
{
	return width() >= s.width() && height() >= s.height();
}

bool Size::operator <(Size s)
{
	return width() < s.width() && height() < s.height();
}

bool Size::operator >(Size s)
{
	return width() > s.width() && height() > s.height();
}

void Size::operator +=(Size s)
{
	m_width		+= s.width();
	m_height	+= s.height();
}

void Size::operator -=(Size s)
{
	m_width		-= s.width();
	m_height	-= s.height();
}

Size Size::operator +(Size s)
{
	return Size(m_width + s.width(), m_height + s.height());
}

Size Size::operator -(Size s)
{
	return Size(m_width - s.width(),m_height - s.height());
}

Size Size::operator +(Position p)
{
	return Size(m_width + p.x(), m_height + p.y());
}

O_END_NAMESPACE
